/** 剪切数据 */
export interface ClipboardData {
  /** 剪切内容类型 */
  type: string

  /** 操作 */
  operate: ClipboardOperate

  /** 剪切内容 */
  value: any
}

/** 剪切板操作 */
export enum ClipboardOperate {
  /** 复制 */
  COPY = 'copy',

  /** 剪切 */
  CUT = 'cut'
}

/**
 * 剪切板
 * 用于存放控件复制剪切数据
 */
export default class Clipboard {
  /** 剪切数据 */
  private data = <ClipboardData | null>null

  /** 设置剪切数据 */
  set(value: ClipboardData | null = null) {
    this.data = value
  }

  /** 获取剪切数据 */
  get() {
    return this.data
  }

  /** 清理剪切板 */
  clear() {
    this.set()
  }
}
